package lambda;

import java.io.File;
import java.io.FileFilter;

/**
 * JDK8之后推出了一个新的特性:lambda表达式
 * lambda表达式可以让java编写面向函数式编程。
 * 给我们最直观的感受是可以用更精简的语法定义匿名内部类。
 * 语法:
 * (参数列表)->{
 *     方法体
 * }
 * 注意:
 * 使用lambda表达式创建匿名内部类时实现的接口中只能有一个抽象方法!
 */
public class LambdaDemo {
    public static void main(String[] args) {
        //匿名内部类风格
        FileFilter file = new FileFilter() {
            public boolean accept(File f) {
                return f.getName().startsWith(".");
            }
        };

        //lambda表达式写法(省去了接口名和方法名)
        FileFilter file1 = (File f)->{
            return f.getName().startsWith(".");
        };

        //方法参数列表中的参数类型可以不写，如果只有一个参数，那么"()"可以忽略不写
        FileFilter file2 = f->{
            return f.getName().startsWith(".");
        };

        /*
            如果方法体中只有一句代码，那么方法体"{}"可以不写，若这句话有return
            关键字，那么return也要一同忽略。
         */
        FileFilter file3 = f->f.getName().startsWith(".");

        //获取当前目录下名字以"."开始的子项
        File dir = new File(".");
        File[] subs = dir.listFiles(f->f.getName().startsWith("."));

    }
}






